package com.softWang.system.po;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.softWang.common.base.TenantBasePO;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 部门实体
 */
@TableName(value = "system_depts", autoResultMap = true)
@KeySequence("system_depts_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SystemDepts extends TenantBasePO {

    @ApiModelProperty(value = "主键id")
    @TableId
    private Long id;

    @ApiModelProperty(value = "部门名，最大长度为60位")
    @NotBlank(message = "dname不能为空")
    @Size(max = 60, message = "dname最大长度为60位")
    private String dname;

    @ApiModelProperty(value = "类型，(1.内置部门，2.创建的普通部门)")
    private Integer type;


    @ApiModelProperty(value = "父id")
    @NotNull(message = "pid不能为空")
    private Long pid;

    @ApiModelProperty(value = "树id路径，最大长度为100位")
    private String treecode;

    @ApiModelProperty(value = "状态，0:正常,1:停用")
    private Integer state;


    /**
     * 状态枚举
     */
    public enum State {
        /**
         * 正常
         */
        NORMAL(0),
        /**
         * 停用
         */
        DISABLE(1);


        private Integer code;

        State(Integer code) {
            this.code = code;
        }
        public Integer getCode() {
            return this.code;
        }

    }

    /**
     * 类型枚举
     */
    public enum Type {
        /**
         * 内置部门
         */
        INNER(1),
        /**
         * 创建的普通部门
         */
        CREATED(2);


        private Integer code;

        Type(Integer code) {
            this.code = code;
        }
        public Integer getCode() {
            return this.code;
        }
    }

}